↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
TEST_SNAKE_IN(Pattern, C, R) → U11(Pattern, C, R, s2l_in(C, Cols))
TEST_SNAKE_IN(Pattern, C, R) → S2L_IN(C, Cols)
S2L_IN(s(X), .(X1, Y)) → U41(X, X1, Y, s2l_in(X, Y))
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
U11(Pattern, C, R, s2l_out(C, Cols)) → U21(Pattern, C, R, Cols, s2l_in(R, Rows))
U11(Pattern, C, R, s2l_out(C, Cols)) → S2L_IN(R, Rows)
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → U31(Pattern, C, R, snake_in(Pattern, Cols, Rows))
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → SNAKE_IN(Pattern, Cols, Rows)
SNAKE_IN(Pattern, Cols, Rows) → U51(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
SNAKE_IN(Pattern, Cols, Rows) → INFINITE_SNAKE_IN(Pattern, InfSnake, InfSnake)
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → U81(A, R, T, S, infinite_snake_in(R, T, S))
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U61(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → PRODUCE_SNAKE_IN(Rows, Cols, InfSnake, Snake)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → PART_OF_SNAKE_IN(Cols, InfSnake, NewInfSnake, Part)
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U111(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U101(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U71(Pattern, Cols, Rows, coil_it_in(Snake, odd))
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → COIL_IT_IN(Snake, odd)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
COIL_IT_IN(.(Line, Lines), even) → REVERSE2_IN(Line, Line1)
REVERSE2_IN(List, Reversed) → U151(List, Reversed, reverse_in(List, [], Reversed))
REVERSE2_IN(List, Reversed) → REVERSE_IN(List, [], Reversed)
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → U161(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
U131(Line, Lines, reverse2_out(Line, Line1)) → U141(Line, Lines, coil_it_in(Lines, odd))
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → U121(Line, Lines, coil_it_in(Lines, even))
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
TEST_SNAKE_IN(Pattern, C, R) → U11(Pattern, C, R, s2l_in(C, Cols))
TEST_SNAKE_IN(Pattern, C, R) → S2L_IN(C, Cols)
S2L_IN(s(X), .(X1, Y)) → U41(X, X1, Y, s2l_in(X, Y))
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
U11(Pattern, C, R, s2l_out(C, Cols)) → U21(Pattern, C, R, Cols, s2l_in(R, Rows))
U11(Pattern, C, R, s2l_out(C, Cols)) → S2L_IN(R, Rows)
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → U31(Pattern, C, R, snake_in(Pattern, Cols, Rows))
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → SNAKE_IN(Pattern, Cols, Rows)
SNAKE_IN(Pattern, Cols, Rows) → U51(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
SNAKE_IN(Pattern, Cols, Rows) → INFINITE_SNAKE_IN(Pattern, InfSnake, InfSnake)
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → U81(A, R, T, S, infinite_snake_in(R, T, S))
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U61(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → PRODUCE_SNAKE_IN(Rows, Cols, InfSnake, Snake)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → PART_OF_SNAKE_IN(Cols, InfSnake, NewInfSnake, Part)
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U111(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U101(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U71(Pattern, Cols, Rows, coil_it_in(Snake, odd))
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → COIL_IT_IN(Snake, odd)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
COIL_IT_IN(.(Line, Lines), even) → REVERSE2_IN(Line, Line1)
REVERSE2_IN(List, Reversed) → U151(List, Reversed, reverse_in(List, [], Reversed))
REVERSE2_IN(List, Reversed) → REVERSE_IN(List, [], Reversed)
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → U161(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
U131(Line, Lines, reverse2_out(Line, Line1)) → U141(Line, Lines, coil_it_in(Lines, odd))
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → U121(Line, Lines, coil_it_in(Lines, even))
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
REVERSE_IN → REVERSE_IN
REVERSE_IN → REVERSE_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
COIL_IT_IN(odd) → COIL_IT_IN(even)
COIL_IT_IN(even) → U131(reverse2_in)
U131(reverse2_out) → COIL_IT_IN(odd)
reverse2_in → U15(reverse_in)
U15(reverse_out) → reverse2_out
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
COIL_IT_IN(even) → U131(U15(reverse_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse2_in → U15(reverse_in)
U15(reverse_out) → reverse2_out
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
reverse2_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
U15(x0)
reverse_in
U16(x0)
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
PART_OF_SNAKE_IN → PART_OF_SNAKE_IN
PART_OF_SNAKE_IN → PART_OF_SNAKE_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(part_of_snake_in)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
part_of_snake_in
U11(x0)
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
part_of_snake_in
U11(x0)
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
INFINITE_SNAKE_IN(.(A, R)) → INFINITE_SNAKE_IN(R)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PrologToPiTRSProof
S2L_IN(s(X)) → S2L_IN(X)
From the DPs we obtained the following set of size-change graphs:
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
TEST_SNAKE_IN(Pattern, C, R) → U11(Pattern, C, R, s2l_in(C, Cols))
TEST_SNAKE_IN(Pattern, C, R) → S2L_IN(C, Cols)
S2L_IN(s(X), .(X1, Y)) → U41(X, X1, Y, s2l_in(X, Y))
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
U11(Pattern, C, R, s2l_out(C, Cols)) → U21(Pattern, C, R, Cols, s2l_in(R, Rows))
U11(Pattern, C, R, s2l_out(C, Cols)) → S2L_IN(R, Rows)
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → U31(Pattern, C, R, snake_in(Pattern, Cols, Rows))
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → SNAKE_IN(Pattern, Cols, Rows)
SNAKE_IN(Pattern, Cols, Rows) → U51(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
SNAKE_IN(Pattern, Cols, Rows) → INFINITE_SNAKE_IN(Pattern, InfSnake, InfSnake)
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → U81(A, R, T, S, infinite_snake_in(R, T, S))
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U61(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → PRODUCE_SNAKE_IN(Rows, Cols, InfSnake, Snake)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → PART_OF_SNAKE_IN(Cols, InfSnake, NewInfSnake, Part)
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U111(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U101(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U71(Pattern, Cols, Rows, coil_it_in(Snake, odd))
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → COIL_IT_IN(Snake, odd)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
COIL_IT_IN(.(Line, Lines), even) → REVERSE2_IN(Line, Line1)
REVERSE2_IN(List, Reversed) → U151(List, Reversed, reverse_in(List, [], Reversed))
REVERSE2_IN(List, Reversed) → REVERSE_IN(List, [], Reversed)
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → U161(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
U131(Line, Lines, reverse2_out(Line, Line1)) → U141(Line, Lines, coil_it_in(Lines, odd))
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → U121(Line, Lines, coil_it_in(Lines, even))
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
TEST_SNAKE_IN(Pattern, C, R) → U11(Pattern, C, R, s2l_in(C, Cols))
TEST_SNAKE_IN(Pattern, C, R) → S2L_IN(C, Cols)
S2L_IN(s(X), .(X1, Y)) → U41(X, X1, Y, s2l_in(X, Y))
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
U11(Pattern, C, R, s2l_out(C, Cols)) → U21(Pattern, C, R, Cols, s2l_in(R, Rows))
U11(Pattern, C, R, s2l_out(C, Cols)) → S2L_IN(R, Rows)
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → U31(Pattern, C, R, snake_in(Pattern, Cols, Rows))
U21(Pattern, C, R, Cols, s2l_out(R, Rows)) → SNAKE_IN(Pattern, Cols, Rows)
SNAKE_IN(Pattern, Cols, Rows) → U51(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
SNAKE_IN(Pattern, Cols, Rows) → INFINITE_SNAKE_IN(Pattern, InfSnake, InfSnake)
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → U81(A, R, T, S, infinite_snake_in(R, T, S))
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U61(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
U51(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → PRODUCE_SNAKE_IN(Rows, Cols, InfSnake, Snake)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → PART_OF_SNAKE_IN(Cols, InfSnake, NewInfSnake, Part)
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U111(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U101(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U71(Pattern, Cols, Rows, coil_it_in(Snake, odd))
U61(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → COIL_IT_IN(Snake, odd)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
COIL_IT_IN(.(Line, Lines), even) → REVERSE2_IN(Line, Line1)
REVERSE2_IN(List, Reversed) → U151(List, Reversed, reverse_in(List, [], Reversed))
REVERSE2_IN(List, Reversed) → REVERSE_IN(List, [], Reversed)
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → U161(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
U131(Line, Lines, reverse2_out(Line, Line1)) → U141(Line, Lines, coil_it_in(Lines, odd))
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → U121(Line, Lines, coil_it_in(Lines, even))
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
REVERSE_IN(.(Head, Tail), SoFar, Reversed) → REVERSE_IN(Tail, .(Head, SoFar), Reversed)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
REVERSE_IN → REVERSE_IN
REVERSE_IN → REVERSE_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
U131(Line, Lines, reverse2_out(Line, Line1)) → COIL_IT_IN(Lines, odd)
COIL_IT_IN(.(Line, Lines), odd) → COIL_IT_IN(Lines, even)
COIL_IT_IN(.(Line, Lines), even) → U131(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
COIL_IT_IN(odd) → COIL_IT_IN(even)
COIL_IT_IN(even) → U131(reverse2_in)
U131(reverse2_out) → COIL_IT_IN(odd)
reverse2_in → U15(reverse_in)
U15(reverse_out) → reverse2_out
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
COIL_IT_IN(even) → U131(U15(reverse_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse2_in → U15(reverse_in)
U15(reverse_out) → reverse2_out
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
reverse2_in
U15(x0)
reverse_in
U16(x0)
reverse2_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
U15(x0)
reverse_in
U16(x0)
COIL_IT_IN(odd) → COIL_IT_IN(even)
U131(reverse2_out) → COIL_IT_IN(odd)
COIL_IT_IN(even) → U131(U15(reverse_in))
reverse_in → U16(reverse_in)
reverse_in → reverse_out
U15(reverse_out) → reverse2_out
U16(reverse_out) → reverse_out
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
PART_OF_SNAKE_IN(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → PART_OF_SNAKE_IN(R, Rings, RestSnake, RestRings)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PiDP
PART_OF_SNAKE_IN → PART_OF_SNAKE_IN
PART_OF_SNAKE_IN → PART_OF_SNAKE_IN
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → PRODUCE_SNAKE_IN(Rows, Cols, NewInfSnake, Tail)
PRODUCE_SNAKE_IN(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U91(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PiDP
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(part_of_snake_in)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
part_of_snake_in
U11(x0)
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
part_of_snake_in
U11(x0)
U91(part_of_snake_out) → PRODUCE_SNAKE_IN
PRODUCE_SNAKE_IN → U91(U11(part_of_snake_in))
PRODUCE_SNAKE_IN → U91(part_of_snake_out)
part_of_snake_in → U11(part_of_snake_in)
part_of_snake_in → part_of_snake_out
U11(part_of_snake_out) → part_of_snake_out
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
INFINITE_SNAKE_IN(.(A, R), .(A, T), S) → INFINITE_SNAKE_IN(R, T, S)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
INFINITE_SNAKE_IN(.(A, R)) → INFINITE_SNAKE_IN(R)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
test_snake_in(Pattern, C, R) → U1(Pattern, C, R, s2l_in(C, Cols))
s2l_in(s(X), .(X1, Y)) → U4(X, X1, Y, s2l_in(X, Y))
s2l_in(0, []) → s2l_out(0, [])
U4(X, X1, Y, s2l_out(X, Y)) → s2l_out(s(X), .(X1, Y))
U1(Pattern, C, R, s2l_out(C, Cols)) → U2(Pattern, C, R, Cols, s2l_in(R, Rows))
U2(Pattern, C, R, Cols, s2l_out(R, Rows)) → U3(Pattern, C, R, snake_in(Pattern, Cols, Rows))
snake_in(Pattern, Cols, Rows) → U5(Pattern, Cols, Rows, infinite_snake_in(Pattern, InfSnake, InfSnake))
infinite_snake_in(.(A, R), .(A, T), S) → U8(A, R, T, S, infinite_snake_in(R, T, S))
infinite_snake_in([], S, S) → infinite_snake_out([], S, S)
U8(A, R, T, S, infinite_snake_out(R, T, S)) → infinite_snake_out(.(A, R), .(A, T), S)
U5(Pattern, Cols, Rows, infinite_snake_out(Pattern, InfSnake, InfSnake)) → U6(Pattern, Cols, Rows, produce_snake_in(Rows, Cols, InfSnake, Snake))
produce_snake_in(.(X, Rows), Cols, InfSnake, .(Part, Tail)) → U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_in(Cols, InfSnake, NewInfSnake, Part))
part_of_snake_in(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings)) → U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_in(R, Rings, RestSnake, RestRings))
part_of_snake_in([], RestSnake, RestSnake, []) → part_of_snake_out([], RestSnake, RestSnake, [])
U11(X, R, Ring, Rings, RestSnake, RestRings, part_of_snake_out(R, Rings, RestSnake, RestRings)) → part_of_snake_out(.(X, R), .(Ring, Rings), RestSnake, .(Ring, RestRings))
U9(X, Rows, Cols, InfSnake, Part, Tail, part_of_snake_out(Cols, InfSnake, NewInfSnake, Part)) → U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_in(Rows, Cols, NewInfSnake, Tail))
produce_snake_in([], X, X1, []) → produce_snake_out([], X, X1, [])
U10(X, Rows, Cols, InfSnake, Part, Tail, produce_snake_out(Rows, Cols, NewInfSnake, Tail)) → produce_snake_out(.(X, Rows), Cols, InfSnake, .(Part, Tail))
U6(Pattern, Cols, Rows, produce_snake_out(Rows, Cols, InfSnake, Snake)) → U7(Pattern, Cols, Rows, coil_it_in(Snake, odd))
coil_it_in(.(Line, Lines), even) → U13(Line, Lines, reverse2_in(Line, Line1))
reverse2_in(List, Reversed) → U15(List, Reversed, reverse_in(List, [], Reversed))
reverse_in(.(Head, Tail), SoFar, Reversed) → U16(Head, Tail, SoFar, Reversed, reverse_in(Tail, .(Head, SoFar), Reversed))
reverse_in([], Reversed, Reversed) → reverse_out([], Reversed, Reversed)
U16(Head, Tail, SoFar, Reversed, reverse_out(Tail, .(Head, SoFar), Reversed)) → reverse_out(.(Head, Tail), SoFar, Reversed)
U15(List, Reversed, reverse_out(List, [], Reversed)) → reverse2_out(List, Reversed)
U13(Line, Lines, reverse2_out(Line, Line1)) → U14(Line, Lines, coil_it_in(Lines, odd))
coil_it_in(.(Line, Lines), odd) → U12(Line, Lines, coil_it_in(Lines, even))
coil_it_in([], X) → coil_it_out([], X)
U12(Line, Lines, coil_it_out(Lines, even)) → coil_it_out(.(Line, Lines), odd)
U14(Line, Lines, coil_it_out(Lines, odd)) → coil_it_out(.(Line, Lines), even)
U7(Pattern, Cols, Rows, coil_it_out(Snake, odd)) → snake_out(Pattern, Cols, Rows)
U3(Pattern, C, R, snake_out(Pattern, Cols, Rows)) → test_snake_out(Pattern, C, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
S2L_IN(s(X), .(X1, Y)) → S2L_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
S2L_IN(s(X)) → S2L_IN(X)
From the DPs we obtained the following set of size-change graphs: